/**
 * @description 本地mock数据模拟
 */

/**
 * @description 生成随机昵称
 * @returns {string} 随机昵称
 */
export const generateRandomNickname = () => {
  const nicknames = [
    '东东',
    '小东',
    '西西',
    '小西',
    '南南',
    '小南',
    '北北',
    '小北',
    '中中',
    '小中',
  ]
  return `图鸟-${nicknames[Math.floor(Math.random() * nicknames.length)]}`
}

/**
 * @description 生成随机头像
 * @returns {string} 随机头像
 */
export const generateRandomAvatar = (type: 'default' | 'xiong' = 'default') => {
  switch (type) {
    case 'xiong':
      return `https://resource.tuniaokj.com/images/avatar/xiong/x${
        Math.floor(Math.random() * 19) + 1
      }.jpg`
    default:
      return `https://resource.tuniaokj.com/images/avatar/default/${
        Math.floor(Math.random() * 49) + 1
      }.png`
  }
}

/**
 * @params {number} min 最小值
 * @params {number} max 最大值
 * @description 生成指定范围内的随机整数
 * @returns {number} 随机整数
 */
export const generateRandomNumber = (min: number, max: number) => {
  return Math.floor(Math.random() * (max - min + 1)) + min
}

/**
 * @params {number} min 最小值
 * @params {number} max 最大值
 * @params {number} decimal 小数位数
 * @description 生成指定范围内的随机浮点数
 * @returns {number} 随机浮点数
 */
export const generateRandomFloat = (min: number, max: number, decimal = 2) => {
  return Number.parseFloat((Math.random() * (max - min) + min).toFixed(decimal))
}


/**
 * 复制到剪切板
 */
export const copyToClipBoard = (
  text: string | number,
  successTips = '复制成功'
) => {
  if (typeof text === 'number') {
    text = text.toString()
  }
  uni.setClipboardData({
    data: text,
    success: () => {
      uni.showToast({
        title: successTips,
        icon: 'none',
      })
    },
    fail: () => {
      uni.showToast({
        title: '复制失败',
        icon: 'none',
      })
    },
  })
}

/**
 * 格式化数字，往数值后添加单位并保留指定位数的小数
 * @param value 待格式化的数值
 * @param digits 保留的小数位数
 * @returns 返回截取带单位后的字符串
 */
export const formatNumberWithQuantityUnit = (
  value: string | number,
  digits = 2
): string => {
  // 数值分割点
  const unitSplit = [
    { value: 1, symbol: '' },
    { value: 1e3, symbol: 'K' },
    { value: 1e4, symbol: 'W' },
  ]

  const reg = /\.0+$|(\.[0=9]*[1-9])0+$/

  let number = 0
  // 判断是什么类型
  if (typeof value === 'string') {
    number = Number(value)
  } else if (typeof value === 'number') {
    number = value
  }

  let i
  for (i = unitSplit.length - 1; i > 0; i--) {
    if (number >= unitSplit[i].value) break
  }
  return (
    (number / unitSplit[i].value).toFixed(digits).replace(reg, '$1') +
    unitSplit[i].symbol
  )
}


type NavMiniProgramEnvVersion = 'develop' | 'trial' | 'release'

/**
 * 跳转到小程序
 * @param appId 小程序appId
 * @param path 打开页面的路径，如果为空则打开首页
 * @param envVersion 打开的小程序版本
 * @returns Promise<void>
 */
export const navMiniProgram = (
  appId: string,
  path = '',
  envVersion: NavMiniProgramEnvVersion = 'release'
) => {
  return new Promise<void>((resolve, reject) => {
    uni.navigateToMiniProgram({
      appId,
      path,
      envVersion,
      success: () => {
        resolve()
      },
      fail: (err) => {
        reject(err)
      },
    })
  })
}

